'''
Created on Apr 7, 2012

@author: jorge
'''

from pyramid.view import view_config
from .UsuarioViews import isLoggedView
import hashlib
import transaction
from . import ensureParams
#from ..models.Rol import Rol
from ..models import Usuario
from ..models import Subscriptor
from ..models import Tema
from ..models import DBSession
#from ..ws import reload

@view_config(route_name='getNewId', renderer = 'json')
def getNewIdView(request):
    '''
    Llamada a la vista, retorna el resultado del intento de logueo
    '''
    params = request.params
    session = request.session
    
    try:
        new = Subscriptor()
        DBSession.add(new)    
        DBSession.flush()
        idn = new.idSubscript
        transaction.commit()
        return {'respuesta' : True , 'new_id' : idn}
    except Exception, e:
        transaction.abort()
        return {'respuesta' : False , 'causa' : str(e)}
    
    
@view_config(route_name='addInteres', renderer='json')
def addInteresView(request):
    params = request.params
    session = request.session
    if not ensureParams(params,['idTema', 'idSubscriptor']):
        return {'respuesta' : False , 'causa' : 'Parametros Insuficientes'}
    #reload()
    toSave = DBSession.query(Subscriptor).filter(Subscriptor.idSubscript==params['idSubscriptor']).one()
    tema = DBSession.query(Tema).filter(Tema.idTema==params['idTema']).one()
    toSave.temas.append(tema)
    toSave.temas = list(set(toSave.temas))    
    try:
        transaction.commit()
    except Exception, e:
        transaction.abort()
        return {'respuesta' : False , 'causa' : str(e)}
        
    return {'respuesta' : True , 'mensaje' : 'Los Datos se Guardaron exitosamente'}
    

@view_config(route_name='delInteres', renderer='json')
def delInteresView(request):
    params = request.params
    session = request.session
    if not ensureParams(params,['idTema', 'idSubscriptor']):
        return {'respuesta' : False , 'causa' : 'Parametros Insuficientes'}
    #reload()
    toSave = DBSession.query(Subscriptor).filter(Subscriptor.idSubscript==params['idSubscriptor']).one()
    tema = DBSession.query(Tema).filter(Tema.idTema==params['idTema']).one()
    try:
        toSave.temas.remove(tema)
        transaction.commit()
    except Exception, e:
        transaction.abort()
        return {'respuesta' : False , 'causa' : str(e)}
        
    return {'respuesta' : True , 'mensaje' : 'Los Datos se Guardaron exitosamente'}
    
    
@view_config(route_name='getInteres', renderer='json')
def getInteresView(request):
    params = request.params
    session = request.session
    if not ensureParams(params,['idSubscriptor']):
        return {'respuesta' : False , 'causa' : 'Parametros Insuficientes'}
    
    subsc = DBSession.query(Subscriptor).filter(Subscriptor.idSubscript==params['idSubscriptor']).one()
    return [t.toDict() for t in subsc.temas]

def getIntereses(idSubscriptor):
    subsc = DBSession.query(Subscriptor).filter(Subscriptor.idSubscript==idSubscriptor).one()
    return [t.toDict() for t in subsc.temas]
